Many modem computing systems utilize random number generators for a variety of applications, including but not limited to games, signal and image processing, modeling of financial and scientific systems, equation solving, and computer security and cryptography. A random number generator operating within such a computing system may generate a series of random numbers as a sequence of independent numbers falling within a given range of values, and with a specified distribution within that range. An ideal random number generator provides a stream of uniformly distributed, non-deterministic, independent bits having high entropy.
In some computing systems, a random number generator may be implemented in software. Such software random number generators often generate a sequence of numbers that is ultimately deterministic and are thus better characterized as pseudo random number generators; however, these solutions may utilize various techniques to decrease the predictability of the generated numbers. For example, the random number generator may utilize data from the system clock, keystroke timing, mouse movements, etc., and incorporate this data into the random number calculations to render the output random number more unpredictable.